﻿package com.zouloux.ui 
{
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.geom.Rectangle;
	
	/**
	 * ...
	 * @author ZoulouX
	 */
	public class Style extends EventDispatcher
	{
		// Surcharger une css globale
		public static function css (pCss:String):void
		{
			
		}
		
		// Parser une CSS
		public static function parseCss (pCss:String):void
		{
			
		}
		
		
		// Le couleur de l'élément
		protected var _color				:uint;
		
		// La présence de la bordure
		protected var _border				:Boolean;
		
		// Le couleur de la bordure de l'élément
		protected var _borderColor			:uint;
		
		// Les marges externes
		protected var _margin				:Rectangle			= new Rectangle();
		
		// Les marges internes
		protected var _padding				:Rectangle			= new Rectangle();
		
		// La largeur de la bordure
		protected var _borderWidth			:Number;
		
		// Le fit du background
		protected var _fit					:String;
		
		// Le background
		protected var _background			:String;
		
		// Le propriétaire
		protected var _owner				:Component;
		
		
		// Les getters
		public function get color():uint { return _color; }
		public function get borderColor():uint { return _borderColor; }
		public function get margin():Rectangle { return _margin; }
		public function get padding():Rectangle { return _padding; }
		public function get borderWidth():Number { return _borderWidth; }
		public function get fit():String { return _fit; }
		public function get background():String { return _background; }
		public function get border():Boolean { return _border; }
		
		// Les setters
		public function set color(value:uint):void 
		{
			_color = value;
			update();
		}
		public function set borderColor(value:uint):void 
		{
			_borderColor = value;
			update();
		}
		public function set margin(value:Rectangle):void 
		{
			_margin = value;
			update();
		}
		public function set padding(value:Rectangle):void 
		{
			_padding = value;
			update();
		}
		public function set borderWidth(value:Number):void 
		{
			_borderWidth = value;
			update();
		}
		public function set fit(value:String):void 
		{
			_fit = value;
			update();
		}
		public function set background(value:String):void 
		{
			_background = value;
			update();
		}
		public function set border(value:Boolean):void 
		{
			_border = value;
			update();
		}
		
		
		// Le constructeur
		public function Style (pOwner:Component)
		{
			// Se souvenir du propriétaire
			_owner = pOwner;
		}
		
		
		// Surcharger le style depuis un texte de type CSS
		public function css (pCss:String):void
		{
			
		}
		
		
		// Actualiser le composant associé
		public function update ():void
		{
			dispatchEvent(new Event(Event.CHANGE));
		}
	}
}